In an information technology (IT) system, it is often desirable to replicate data stored at one location at another location so that if an event occurs (e.g., an equipment failure, a power failure, a natural disaster, or a terrorist attack or other man-made event) that damages or otherwise renders the data at the first location inaccessible, the data can be recovered from the second location. The first location may be referred to as the primary site, the second location may be referred to as the disaster recovery site, and such an occurrence may be referred to as a disaster event. In order to provide sufficient assurance that the disaster recovery site will not be effected by the disaster event effecting the primary site, the disaster recovery site must be geographically separated from the primary site by a sufficient distance.
When replicating the data at the disaster recovery site, it may be desirable to do so in a synchronous manner such that when data is created, updated or stored at the primary site, such data is replicated to the disaster recovery site first and only after receiving an acknowledgement from the disaster recovery site of successful replication is the data write considered complete and successful at the primary site. This allows for no lost data if the primary site goes down. However, excessive roundtrip packet delays resulting from long distances and other network conditions between the primary and disaster recovery sites prevents synchronous replication of data from the primary site to the disaster recovery site. This difficulty is present regardless of whether data replication takes place in the storage, middleware, or application layer of the IT system. Excessive roundtrip packet delays can be unacceptable since operation of applications creating, updating or accessing the data will be delayed while awaiting confirmation that the data has been replicated at the disaster recovery site.